When considering a large computer program where some features have been written using aspect-oriented techniques, the nature of current aspect-oriented languages, such as AspectJ™ of the Eclipse Foundation is such that refactoring in this kind of code base can change the location and number of places where a given aspect applies (or matches). As a result, the feature encapsulated by the aspect may no longer be working correctly. It can be complex and time consuming to work out how refactoring has affected the aspects in a project. Users may also not be aware that their changes have had an effect on the aspect.
An existing solution is the crosscutting comparison view provided by AJDT, the AspectJ™ Development Tools. This crosscutting comparison can be used to compare a saved set of crosscutting relationships with another saved set, or with the current state of a project. There are two main drawbacks to this solution. First the user has to be aware that a piece of work they are about to perform may affect an aspect. Second if there are a lot of changes they can be difficult to interpret.
Currently, in an integrated development environment such as Eclipse and AJDT, when developing applications in an aspect-oriented language a user is shown where code is affected by an aspect. This takes the form of an icon in the left-hand margin (gutter) of the editor window. But in response to changes in the code these icons may appear and disappear, without the user noticing such a change.